#ifndef TLS_MATERIAL_H
#define TLS_MATERIAL_H
#include "bxdf.h"

namespace tls{
  struct material{
    virtual bxdf* const* get_bxdfs(const isect& hit)const=0;
    virtual ~material()=0;
  };

  //---matte---
  struct matte:public material{
  private:
    bxdf* bxdfs[2];
  public:
    vec3 r;

    matte(const vec3& c):r(c){
      bxdfs[0]=new lambertian(c);
      bxdfs[1]=0;
    }
    bxdf* const* get_bxdfs(const isect& hit)const;
    ~matte();
  };
  void* create_matte(FILE* file);


}//namespace tls

#endif
